package edu.mis.modules.project;

import com.jfinal.core.Controller;

import edu.mis.model.Project;
import edu.mis.model.Projectvariety;
import edu.mis.modules.user.UserService;

public class ProjectController extends Controller{
	
	static ProjectService service = new ProjectService();
    static UserService userService = new UserService();
	
	public void index() {
		
		if(userService.findUserWithRole().equals(1)) {
			render("project.html");
		}else if(userService.findUserWithRole().equals(2) || userService.findUserWithRole().equals(3)){
			render("noAuthorityProject.html");
		}else {
			render("noAllAuthority.html");
		}
	}
	
	public void list(){
		setAttr("data", service.findAllProjectWithProjectVariety());
		renderJson();  
	}

	/**
	 * 项目视图
	 */
	
	public void add() {
		
		//render("add.html");  //（默认对应add.html，否则需显性指定，如render("addRole.html")）
	}
	
	public void register(){
		Project project  =  getModel(Project.class);   //使用getModel方法获取表单值，表单中name应使用对象名.属性名，如commodity.id, commodity.code,详见jfinal手册
		if(service.add(project)==3){
			setAttr("result", true); 
			setAttr("msg", "添加项目成功!"); 
		}else if(service.add(project)==0){
			setAttr("result",false);
			setAttr("msg", "添加项目失败，项目编号和项目名重复!"); 
		}else if (service.add(project)==1) {
			setAttr("result",false);
			setAttr("msg", "添加项目失败，项目编号重复!"); 
		}else if (service.add(project)==2) {
			setAttr("result",false);
			setAttr("msg", "添加项目失败，项目名重复!");
		}
		renderJson(); 
	}
	
	/**
	 * 修改编码视图（默认对应edit.html，否则需显性指定，如render("editCode.html")，）
	 */
	public void edit() {
		setAttr("project", service.findProjectByProjectId(getParaToInt("projectId")));  //此处Project应与表单中${(Project.name)!}等中的Project保持一致。
		
	}
	
	public void updateProjectNumber(){
		int projectId=this.getParaToInt("projectId");   //使用getPara获取表单值，与getModel方法获得表单值不同，name不能使用对象名.属性名，如commodity.code，而直接使用属性名，如code
		int newProjectNumber = this.getParaToInt("projectNumber");
		if(service.updateProjectNumber(projectId, newProjectNumber)){
			setAttr("result", true);
			setAttr("msg", "修改编码成功!");
		}else{
			setAttr("result", false);
		}
		renderJson();
	}
	
	/**
	 * 项目归类视图
	 */
	public void auth() {
		setAttr("project", service.findProjectByProjectId(getParaToInt("projectId")));  //此处Project应与表单中${(Project.name)!}等中的Project保持一致。
		setAttr("projectvariety",Projectvariety.dao.findAll());
	}
	
	/**
	 * 项目归类
	 */
	public void authorize(){
		int projectId=this.getParaToInt("projectId");   
		int projectVarietyId = this.getParaToInt("projectVarietyId");
		if(service.ProjectAuthorize(projectId, projectVarietyId)){
			setAttr("result", true);
			setAttr("msg", "项目归类成功!");
		}else{
			setAttr("result", false);
		}
		renderJson();
	}
	
	/**
	 * 删除项目
	 * 
	 */
	public void delete() {
		if(service.deleteProjectyByProjectId(getParaToInt("projectId"))){
			setAttr("result", true);
			setAttr("msg", "删除项目成功!");
		}else{
			setAttr("result", false);
		}
		renderJson();
	}
	
}
